CEO function
A program can register only one CEO function, but XgrProcessMessages() , sends every
message it processes to that function, no matter what the message contains. Furthermore,
XgrProcessMessages() sends each message to the CEO function before any other, and the CEO
can cancel the message to prevent its propogation to other functions.
Programs call XgrSetCEO (func) to set the address of the CEO function to func . An address
of 0 means no CEO function is active. Only one CEO function can be active at a time, so
each time XgrSetCEO(func) is called, the previous CEO function is replaced by func .
When messages are processed by XgrProcessMessages() , they are sent to the CEO function,
then to the window function appropriate to the window/grid and message. This sequence is
initiated when programs call XgrProcessMessages() .
XgrProcessMessages() checks to see if a CEO function exists. If it does, it calls the CEO
function, passing it the message arguments, plus 0 in r0 and a duplicate of the window or
grid argument in r1 . The CEO can examine the message and take whatever action it needs to
perform its function.
The CEO function can return -1 in r0 to cancel the message. When XgrProcessMessages()
finds the CEO function returned -1 in r0 , it cancels the message and returns without
calling any window functions it otherwise would have called to process the message.